added naive versions of respective conversions.
authorJan Heller <jheller@svn.gnome.org>
Tue, 20 May 2008 14:38:02 +0000 (14:38 +0000)
committerJan Heller <jheller@src.gnome.org>
Tue, 20 May 2008 14:38:02 +0000 (14:38 +0000)
2008-05-20  Jan Heller  <jheller@svn.gnome.org>

        * extensions/gimp-8bit.c (conv_rgbaF_linear_rgb8_linear),
        (conv_rgbaF_linear_rgba8_linear), (init): added naive versions
        of respective conversions.

svn path=/trunk/; revision=312

ChangeLog
extensions/gimp-8bit.c

index c01b46f34b6b0d7b9b8bd89a642945114a7d0dc0..215991c7d35d0bbf39cf485625f75e166d01f766 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-05-20  Jan Heller  <jheller@svn.gnome.org>
+
+       * extensions/gimp-8bit.c (conv_rgbaF_linear_rgb8_linear),
+       (conv_rgbaF_linear_rgba8_linear), (init): added naive versions
+       of respective conversions.
+
 2008-05-14  Sven Neumann  <sven@gimp.org>
 
        * babl/babl-format.c (format_new): initialize format.visited.
index f3a4b8b1def5caf8a0df6f8a1090bf0d51f69fa7..e2faf051c8a3c7ee0a4fb54fc0aad948f94c5431 100644 (file)
@@ -296,6 +296,59 @@ conv_g8_gamma_2_2_rgbaF_linear (unsigned char *src,
   return samples;
 }
 
+static INLINE long
+conv_rgbaF_linear_rgb8_linear (unsigned char *src, 
+                               unsigned char *dst, 
+                               long           samples)
+{
+  float *fsrc = (float *) src;
+  long n = samples;
+  long int v;
+
+  while (n--)
+    {
+      v = rint (*fsrc++ * 255.0);
+      *dst++ = (v < 0) ? 0 : ((v > 255) ? 255 : v);
+
+      v = rint (*fsrc++ * 255.0);
+      *dst++ = (v < 0) ? 0 : ((v > 255) ? 255 : v);
+     
+      v = rint (*fsrc++ * 255.0);
+      *dst++ = (v < 0) ? 0 : ((v > 255) ? 255 : v);
+
+      fsrc++;
+    }
+
+  return samples;
+}
+
+static INLINE long
+conv_rgbaF_linear_rgba8_linear (unsigned char *src, 
+                                unsigned char *dst, 
+                                long           samples)
+{
+  float *fsrc = (float *) src;
+  long n = samples;
+  long int v;
+
+  while (n--)
+    {
+      v = rint (*fsrc++ * 255.0);
+      *dst++ = (v < 0) ? 0 : ((v > 255) ? 255 : v);
+
+      v = rint (*fsrc++ * 255.0);
+      *dst++ = (v < 0) ? 0 : ((v > 255) ? 255 : v);
+     
+      v = rint (*fsrc++ * 255.0);
+      *dst++ = (v < 0) ? 0 : ((v > 255) ? 255 : v);
+
+      v = rint (*fsrc++ * 255.0);
+      *dst++ = (v < 0) ? 0 : ((v > 255) ? 255 : v);
+    }
+
+  return samples;
+}
+
 int init (void);
 
 int
@@ -402,5 +455,9 @@ init (void)
   o (g8_gamma_2_2, gF_linear);
   o (g8_linear, rgbaF_linear);
   o (g8_gamma_2_2, rgbaF_linear);
+
+  o (rgbaF_linear, rgb8_linear);
+  o (rgbaF_linear, rgba8_linear);
+
   return 0;
 }